Systems for improving servo-demodulation robustness

ABSTRACT

Systems are provided for improving servo-demodulation robustness. SAM pattern detections are characterized as either good SAM detections or bad SAM detections. Further servo functions are then based on whether the detection of the SAM pattern in a servo wedge was characterized as a good SAM detection or characterized as a bad SAM detection.

PRIORITY CLAIM

This application claims priority to U.S. Provisional Patent ApplicationNo. 60/436,678, filed Dec. 27, 2002, entitled “Systems for ImprovingServo-Demodulation Robustness.”

CROSS REFERENCE TO RELATED APPLICATIONS

This application relates to the following commonly invented and commonlyassigned applications, each of which was filed on the, same day as thisapplication: U.S. patent application Ser. No. 10/412,853, entitled“Systems for Detecting Multiple Occurrences of a SAM Pattern to TherebyImprove Servo-Demodulation Robustness”; U.S. patent application Ser. No.10/413,194, entitled “Systems for Preventing Channel Control Values frombeing Corrupted to thereby Improve Servo-Demodulation Robustness”; U.S.patent application Ser. No. 10/413,338, entitled “Methods for ImprovingServo-Demodulation Robustness”; U.S. patent application Ser. No.10/413,043, entitled “Methods for Detecting Multiple Occurrences of aSAM Pattern to thereby Improve Servo-Demodulation Robustness”; U.S.patent application Ser. No. 10/413,339, entitled “Methods for PreventingChannel Control Values from being Corrupted to thereby ImproveServo-Demodulation Robustness.”

FIELD OF THE INVENTION

This invention relates to disk drives, and more particularly toimproving servo demodulation robustness.

BACKGROUND

Disk drives typically include one or more disks that define amultiplicity of concentric data tracks. Head position control systemsare typically used to move a transducer (head) from a departure track toa destination track location during track seeking operations, to settlethe head at the vicinity of the destination track during track settlingoperations, and to follow the read or write centerline of thedestination track during track following operations when datainformation is written on or read from the disk.

Servo head position information is typically embedded within servowedges on a disk, which are usually recorded in evenly spaced apartareas or sectors of a track. The embedded servo wedges includes servohead position and track/data identification fields, and typicallyinclude a recognizable servo address mark (SAM) pattern which isprovided to resynchronize timers for recovering the servo head positionand the track/data identification field information, and which mark intime an expected arrival of the next embedded servo wedge. SAM patterns(often simply referred to hereafter as SAMs), in the past, were intendedto be unique from patterns that may appear in data or in other portionsof a servo wedge. However, that is no longer the case, and patternsequivalent to a SAM may appear in data or in other parts of a servowedge. Further, a demodulated signal may include a pattern thatresembles a SAM pattern because of noise or flaws on the disk media.

Conventionally, a servo demodulator determines when or where to startsearching for a SAM pattern by timing from the most recent SAM that wasdetected. Typically, the servo demodulator searches for the SAM during atiming window, that is centered a pre-determined (SAM-to-SAM) time afterthe most recently detected SAM, with a width equal to a specifiedtiming-variation tolerance. If the SAM is not detected within thewindow, then the timing of the search for the next SAM is determined by“free-wheeling,” based upon the last SAM that was actually demodulated.When the next SAM is detected (i.e., the SAM following a missing SAM),the timing circuitry is re-set to begin looking for the following SAMbased upon the timing of the SAM just detected. This conventional schemecan typically get though at least one missing SAM, and detect the nextSAM (which is hopefully good, and can be detected). However, the servodemodulator may inadvertently detect a SAM pattern in the wrong place.This may occur, for example, because another portion of the servo wedgeis substantially identical to the SAM (or due to noise, or media orsignal corruption, appears substantially identical to the SAM). If thisoccurs, the demodulator will begin to search for the next SAM at thewrong time or place. In this manner, a single bad SAM detection couldcause the servo demodulator to completely lose lock, adversely affectingthe performance of the disk drive. There is a need to decrease, andhopefully prevent, the servo demodulator from losing lock.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a plan view showing exemplary data and servo patterns on astorage disk;

FIG. 2 is an illustration of servo and data fields within a track of thedisk shown in FIG. 1;

FIG. 3 is an illustration of exemplary subpart fields within a servofield shown in FIG. 2;

FIG. 4 is a high level diagram of an exemplary disk drive device, whichcan implement embodiments of the present invention;

FIG. 5 is a high level diagram showing exemplary portions of theread/write path and the servo field detector of FIG. 4;

FIG. 6 is a timer value vs. time graph that is useful for explainingfreewheeling;

FIG. 7 is a timer value vs. time graph that is useful for explainingembodiments of the present invention where a SAM search window isadjusted;

FIG. 8 is a timer value vs. time graph that is useful for explainingembodiments of the present invention wherein a timer is adjusted;

FIG. 9 is a high level flow diagram that summarizes various embodimentsof the present invention in which a detection of a SAM pattern ischaracterized as a good or a bad SAM detection;

FIG. 10 is a high level flow diagram that summarizes various embodimentsof the present invention that search for multiple occurrences of a SAMpattern in a single servo wedge; and

FIGS. 11A and 11B are high level flow diagrams that summarize variousembodiments of the present invention in which characterizations of SAMpattern detections are used to decide which channel control values touse when beginning to demodulate a next servo wedge.

DETAILED DESCRIPTION

According to embodiments of the present invention, servo demodulatoroutputs (e.g., SAM patterns, track numbers and/or burst values, etc.)are checked for “sanity.” If the demodulation output appears bad (e.g.,does not resemble a predicted or expected output), the servo demodulatortiming circuitry can be re-programmed to search for the next SAM basedupon the timing of a previous (e.g., the most recently detected) SAMpattern detection that met the sanity check. This way, a single bad SAMdetection will not cause the servo demodulator to lose lock.

Systems and methods are provided for using servo address mark (SAM)pattern detections to improve servo-demodulation robustness. SAM patterndetections are characterized as either good SAM detections or bad SAMdetections. Further servo functions are then based on whether thedetection of the SAM pattern in a servo wedge was characterized as agood SAM detection or characterized as a bad SAM detection.

In accordance with embodiments of the present invention, multipleoccurrences of the SAM pattern are searched for in a single servo wedge.Each detection of the SAM pattern in the servo wedge is characterized asa good SAM detection or a bad SAM detection. If more than one detectionof the SAM pattern in the servo wedge are characterized as good SAMdetections, one of the detections is selected as the best good SAMdetection. Further servo functions can then be performed based on thebest good SAM detection.

In accordance with embodiments of the present invention, the SAM patternis searched for in a servo wedge. If the SAM pattern is detected in thefirst servo wedge, one or more channel control values (e.g., servo AGCand/or PLL values) associated with the first servo wedge are stored, anda determination is made whether to characterize the detection of the SAMpattern as either a good SAM detection or a bad SAM detection. If thedetection of the SAM pattern is characterized as a good SAM detection,then the just stored channel control values are used as starting valueswhen beginning to read a next servo wedge. However, if the SAM patternis not detected, or a detection is characterized as bad, one or morepreviously stored or predicted channel control values are used asstarting values when beginning to read the next servo wedge.

Further embodiments, features, aspects, and advantages of the presentinvention will become more apparent from the additional description setforth below, the drawings and the claims.

Exemplary Disk

Before describing the various embodiments of the present invention, itis useful to first explain an exemplary disk drive system that storesinformation on rotatable storage disks. FIG. 1 is a plan view of anexemplary rotatable storage disk 110. The disk 110 includes a centralopening 112 to enable a rotating hub to securely clamp the disk to adisk spindle. Between an inner area 114 and an outer peripheral area116, a data storage area of a multiplicity of concentric data tracks isdefined. The tracks are arranged into multiple data zones 118 (alsoknown as data fields or user data fields), from a radially outermostdata zone 118 to a radially innermost data zone 118. A systeminformation region and a diagnostics and guard region typically liesnear the inner diameter and/or outer diameter of the disk 110, outsidethe data storage area.

FIG. 1 also depicts a series of radially extending servo sectors 138(also known as servo fields or servo wedges). The radial servo sectors138 (shown as several narrow spokes in FIG. 1, but are typicallysomewhat curved) are typically equally spaced around the circumferenceof the disk 110. While the number of data sectors in each zone varies,it is apparent from inspection of FIG. 1 that the number of embeddedservo wedges 138 remains invariant throughout the extent of the storagesurface. As each data sector is of fixed storage capacity or length(e.g. 512 bytes of user data per data sector), and since the density anddata rates vary from data zone to data zone, the servo sectors 138interrupt and split up at least some of the data sectors or fields. Theservo sectors 138 are typically recorded with a servo writing apparatusat the factory, but may be written (or partially written) by aself-servowriting operation.

The number and scale of the various data zones 118 and servo wedges 138shown in FIG. 1 are not precise. For example, there is likely more datazones 118 and servo wedges 138 than shown. Further, the servo wedges 138likely take up less area on the disk 110 than shown.

Exemplary Servo Wedge

FIG. 2 illustrates the repeating of servo fields 138 and data fields 118in a track. Each servo field 138 is physically associated with theimmediately following data fields 118, as determined by the direction ofrotation of the disk 110 relative to a head. A plurality of servo fields138 and data fields 118 are recorded on each track. The number of trackson each disk is usually relatively high (e.g., greater than twothousand).

Each servo wedge 138 is formed by a number of subpart fields as shown inFIG. 3. Each servo wedge 138 typically includes a preamble 302, a servoaddress mark (“SAM”) 304, a wedge number 306, a track number code 308and a number of off-track bursts 310, typically four. The order in whichthese subpart fields occur is sometimes changed. Also, there may beadditional and/or different subpart fields, which are not shown in thisexample.

The preamble 302 is a series of magnetic transitions which representsthe start of the servo field 138. A signal produced while reading thepreamble 302 can be used to adjust an automatic gain control (AGC)and/or a phase lock loop (PLL) of a servo demodulator, to allowdemodulation of the rest of the servo wedge 138. The SAM 304, whichspecifies the beginning of available information from the servo wedge138, is typically used to resynchronize timer(s) for recovering theservo head position and the track/data identification field information,and to mark in time the expected arrival of the next servo wedge 138. Itis noted that some disk drive companies refer to the SAM pattern as aservo synchronization mark (SSM). Thus, the term SSM maybe substitutedfor the term SAM, as used herein.

The wedge number 306 (which may simply be an index mark), is used tocount the number of servo fields in each track when the disk 110 isrotating. A different wedge number can uniquely identify each servowedge. Alternatively, if the wedge number is simply an index mark, thewedge number can be, for example, a data bit “one” for an index servowedge, and a data bit “zero” for all other servo wedges. The term wedgenumber is also meant to cover other numbers or marks that are used toindicate the rotational position of a disk, relative to a head.

The track number 308, which is usually gray coded, is used for uniquelyidentifying each track. The off-track bursts 310 (pictoriallyrepresented as A, B, C and D) are employed to control the finepositioning of a read/write head relative to the tracks. In general, thesubpart fields 302-310 that form the servo wedge 138 contain controlinformation that is used for servo control to achieve proper operationof a head disk assembly (HDA) of a disk drive storage device.

Exemplary Disk Drive Device

FIG. 4 is a high level diagram of an exemplary disk drive storage device402. Referring to FIG. 4, the disk drive device 402 is shown asincluding a head disk assembly (HDA) 406, a hard disk controller (HDC)408, a read/write channel 413, a microprocessor 410, a motor driver 422and a buffer 424. The read/write channel 413 is shown as including aread/write path 412 and a servo demodulator 404. The read/write path412, which can be used to read and write user data and servo data, mayinclude front end circuitry useful for servo demodulation. Theread/write path 412 may also be used for writing servo information inself-servo writing. Additional details of the read/write path 412 andthe servo demodulator 404 are discussed below with reference to FIG. 5.One of ordinary skill in the art will appreciate that the drive 402includes additional components, which are not shown because they are notnecessary to explain the embodiments of the present invention.

The HDA 406 includes one or more disks 110 upon which data and servoinformation can be written to, or read from, by transducers 414, oftenreferred to as heads 414. A spindle motor (SM) 416 rotates the disks 110with respect to the heads 414. A voice coil motor (VCM) 418 moves anactuator 420 to position the heads 414 on the disks 110. The motordriver 422 drives the VCM 418 and the SM 416. More specifically, themicroprocessor 410, using the motor driver 422, controls the VCM 418 andthe actuator 420 to accurately position the heads 414 over the tracks(described with reference to FIGS. 1–3) so that reliable reading andwriting of data can be achieved. The servo fields 138, discussed abovein the description of FIGS. 1–3, are used for servo control to keep theheads 414 on track and to assist with identifying proper locations onthe disks 110 where data is written to or read from. When reading aservo wedge 138, the heads 414 act as sensors that detect the positioninformation in the servo wedges 138, to provide feedback for properpositioning of the heads 414.

Among other functions, the HDC 408 enables the disk drive device 402 tocommunicate with a host computer (e.g., a personal computer or webserver). For example, the HDC 408 may control the transfer of user data(as opposed to servo data) between the read/write path 412 and the hostcomputer. The HDC 404 will most likely use the buffer 424 whenperforming such transfers. The read/write path 412 includes electroniccircuits used in the process of writing and reading information to andfrom disks 110. The microprocessor 410, which can be a micro-controller,includes firmware that can be used to perform various embodiments of thepresent invention. The microprocessor 410 can also perform servo controlalgorithms, and thus, maybe referred to as a servo controller.Alternatively, a separate microprocessor or digital signal processor(not shown) can perform servo control functions.

The servo demodulator 404 is shown as including a servo phase lockedloop (PLL) 426, a servo automatic gain control (AGC) 428, a servo fielddetector 430 and register space 432. The servo PLL 426, in general, is acontrol loop that is used to provide frequency and phase control for theone or more timing or clock circuits (not specifically shown in FIG. 4),within the servo demodulator 404. For example, the servo PLL 426 canprovide timing signals to the read/write path 412. The servo AGC 428,which includes (or drives) a variable gain amplifier, is used to keepthe output of the read/write path 412 at a substantially constant levelwhen servo wedges 138 on one of the disks 110 are being read. The servofield detector 430, which is discussed in more detail with reference toFIG. 5, is used to detect and/or demodulate the various subfields of theservo wedges 138, including the SAM 304, wedge number 306, track number308 and servo bursts 310. The microprocessor 410 is shown as beingseparate from the servo demodulator 404. However, because themicroprocessor 410 is used to perform various servo demodulationfunctions (e.g., decisions, comparisons, characterization and the like),the microprocessor 410 can be thought of as being part of the servodemodulator 404, or the servo demodulator 404 can have its ownmicroprocessor.

The servo fields 138 are typically written at a different frequency thanthe interspersed user data fields 118. Because of this, the read/writepath 412 will either switch between independent signal paths, or switchcharacteristics of common processing circuitry. To accomplish this,information for the servo AGC 428 can be stored in registers and/ormemory, allowing the information to be updated in the servo AGC 428 eachtime the read/write path 412 transitions between reading user data andservo data. For example, one or more registers (e.g., in register space432) can be used to store appropriate servo AGC values (e.g., gainvalues, filter coefficients, filter accumulation paths, etc.) for whenthe read/write path 412 is reading servo data, and one or more registerscan be used to store appropriate values (e.g., gain values, filtercoefficients, filter accumulation paths, etc.) for when the read/writepath 412 is reading user data. A control signal can be used to selectthe appropriate registers according to the current mode of theread/write path 412. The servo AGC value(s) that are stored can bedynamically updated. For example, the stored servo AGC value(s) for usewhen the read/write path 412 is reading servo data can be updated eachtime an additional servo wedge 138 is read. In this manner, the servoAGC value(s) determined for a most recently read servo wedge 138 can bethe starting servo AGC value(s) when the next servo wedge 138 is read.

In addition to storing servo AGC information, servo PLL information(e.g., a servo PLL frequency) can be stored in registers and/or inmemory, allowing the servo PLL information to be dynamically updated.For example, a servo PLL frequency value determined for a most recentlyread servo wedge 138 can be the starting servo PLL frequency when thenext servo wedge 138 is read.

Referring now to FIG. 5, some additional details of an exemplaryread/write path 412 and an exemplary servo field detector 430 are shown.Since embodiments of the present invention relate more to readoperations, than to write operations, only read portions or theexemplary read/write path 412 are shown. The read portion of path 412 isshown as including a variable gain amplifier (VGA) 512, which receivessignals from heads 414, or more likely from a pre-amplifier (not shown)driven by a signal received from heads 414. As mentioned above, the VGA512 maybe external to the read/write path 412. During servo reading, theVGA 512 is at least partially controlled by the servo AGC 428.Additional amplifiers, such as buffer amplifiers and/or one or moreadditional VGAs may also be present. The path 412 is also shown asincluding an analog filter/equalizer 514, a flash analog-to-digital(A/D) converter 516, a finite impulse response (FIR) filter 518 and adecoder 520. Alternatively, the FIR filter 518 can be upstream of theA/D converter 516, and FIR filtering can be performed using analogcircuitry.

During servo reading, magnetic flux transitions sensed by the selectedhead 414 are likely preamplified before being provided to the VGA 512,which controls amplification of an analog signal stream. The amplifiedanalog signal stream is then provided to the analog filter/equalizer514, which can be programed to be optimized for the data transfer rateof the servo data being read by one of heads 414. The equalized analogsignal is then subjected to sampling and quantization by the high speedflash A/D 516 which generates raw digital samples that are provided tothe FIR filter 518. Timing for sampling can be provided by the servo PLL426, as shown. Alternatively, sampling maybe performed a synchronously,e.g., using an a synchronous clock (in which case, most features of thepresent invention are still useful). The FIR filter 518 filters andconditions the raw digital samples before passing filtered digitalsamples to the decoder 520. The decoder 520 decodes the digital samplestream and outputs a binary signal. The servo PLL 426 can also provideother timing signals that are necessary for the path 412 and portions ofthe servo demodulator 404 to operate properly.

The binary signal output is provided to the servo field detector 430,and more specifically to a SAM detector 532 and a track number detector534 of the servo field detector 430. The output of the FIR filter 518 isprovided to a burst demodulator 536. Alternatively, the output of theflash A/D 516 can be provided to the burst demodulator 536. The SAMdetector 532 searches for a SAM using, for example, pattern recognitionlogic that recognizes the SAM pattern within the binary stream. The SAMdetector 532 can allow some fault or error tolerance, so that a SAMpattern will be detected even if one or more of the bits in the binarystream do not exactly match the SAM pattern. As a consequence, shouldminor errors occur in reading or writing the SAM patterns, it may stillbe possible to fully demodulate the information contained in the servowedge 138 and to read and write data in the data fields 118 followingthe servo wedge 138 in which the errors were detected. An exemplaryerror tolerant SAM detection circuit is disclosed in U.S. Pat. No.5,477,103 to Romano et al., entitled “Sequence, Timing andSynchronization Technique for Servo System Controller of a Computer DiskMass Storage Device,” which is incorporated herein by reference. Thetrack number detector 534 performs decoding of gray codes (if necessary)and detects track numbers. The burst demodulator 536 measures burstamplitudes and/or phases. The servo field detector 430 may also includea wedge number detector, not shown. The wedge number detector woulddetect a wedge number to determine which wedge is being read. The wedgenumber detector can alternatively detect an index mark type wedge numberand determine which wedge is being read based on the number of wedgesthat have been passed since the index mark was detected.

The exemplary servo field detector 430 is shown as also including amaster state machine 550, which generates states providing timingsignals and windows for each of the subpart fields 302, 304, 306 and 310of each servo wedge 138. The master state machine 550 can also superviseoperation of various other elements that may be part of the servo fielddetector 430.

A sector timer 542 can be used for controlling the length of a servowedge 138, for controlling a SAM search window, and other servo datareader functions including, for example, servo interrupt, servo-dataoverwrite protection, write to read recovery time and AGC timing. Thesector timer 542 is, for example, a 12-bit (or more) up counting,synchronously loadable counter running at one half of the operatingfrequency of the servo field detector 430. Each sector timer count canbe a clock cycle, which is, for example, 10.0 nanoseconds. Rather thanusing the sector timer 542 (or in addition to using the sector timer542), a delay timer (not shown) can be used to perform functions of, orsimilar to, the sector timer 542. Alternatively, a programmedfinite-state machine can be used to perform timing functions (and toperform the functions of the master state machine 550).

One of ordinary skill in the art will appreciate that the path 412 andthe servo field detector 430 may include additional components, whichare not shown because they are not necessary to explain the embodimentsof the present invention.

Searching for SAM Patterns

In accordance with some embodiments of the present invention, when themaster state machine 550 (together with the SAM detector 532) detects aservo address mark (SAM), it signals the sector timer 542 causing thepresent value of the sector timer to be saved (e.g., in register space432 or memory), and the sector timer 542 to be reset to zero. The valuestored, which is known as the SAM-to-SAM value, can be used to determinewhere/when to search for the next SAM.

The master state machine 550 (together with the SAM detector 532)searches for a next SAM within a search window, defined about anexpected value (e.g., defined about a sector timer value where the nextSAM is expected to be detected). The expected value can be based, forexample, on the most recently detected SAM-to-SAM value, on a group ofrecently detected SAM-to-SAM values (e.g., based on an average of theprevious few SAM-to-SAM values), or based on a nominal or predeterminedSAM-to-SAM value. More specifically, the search window can be defined bya STARTSEARCH value (e.g., stored in a STARTSEARCH register) and anENDSEARCH value (e.g., stored in an ENDSEARCH register).

Free-wheeling

If the master state machine 550 misses detection of a SAM, the sectortimer 542 does not get reset and keeps counting upward. When the sectortimer 542 reaches the time equal to the ENDSEARCH value, it sends asignal to the master state machine 550, indicating a timeout conditionhas occurred. At this point, the sector timer 542 loads the value from aTIMESUP load time register, which is the time the sector counter 542would nominally be at had the SAM been detected at the expected time andthe sector timer 542 reset. Loading the TIMESUP load time value into thesector timer 542 enables demodulation of some of the remainingsub-fields of the servo wedge and searching for the next SAM at thecorrect time/location. The above process, which occurs after missing thedetection of a SAM, is often referred to as “free-wheeling.”

The concept of free-wheeling can be better appreciated from the SectorTimer Value vs. Time graph shown in FIG. 6. In FIG. 6, a dashed line 602represents the value of the sector timer 542 that triggers the servodemodulator 404 to begin searching for the SAM. This value is referredto as the STARTSEARCH value, which can be stored in a STARTSEARCHregister or in memory. A dashed line 604 represents the value of thesector timer 542 at which the SAM is expected, referred to hereafter asa EXPECTSAM value, which can be stored in an EXPECTSAM register and/orin memory. As mentioned above, the EXPECTSAM value can be a nomimal orpredetermined value, or it can be dynamic by being based on one or moreprevious SAM-to-SAM values. A dashed line 606 represents the ENDSEARCHvalue (i.e., the value of the sector timer 542 that will trigger atimeout), which can be stored in an ENDSEARCH register or in memory. Asmentioned above, the STARTSARCH value and the ENDSEARCH value define asearch window for the SAM pattern, with the EXPECTSAM value defining theexpected time/location of the SAM pattern within the window.

In this example, the SAM is detected at times t1 and t2. However, theSAM is not detected at time t3, and eventually the sector timer valueequals the ENDSEARCH value. At this time, the timeout condition hasoccurred and the sector timer 542 loads the value from the TIMESUP loadtime register (or from memory), which is represented by dashed line 608.This enabled the next SAM to be detected at time t4. For a more specificexample, assume the STARTSEARCH value equals 990, the EXPECTSAM valueequals 1000, and the ENDSEARCH value equals 1010. The difference betweenthe EXPECTSAM value and the ENDSEARCH value in this example equals 10(i.e., 1010−1000=10), which is the value in the TIMEUP load timeregister represented by dashed line 608. Once the timeout conditionoccurs, the sector timer 542 is reset to 10 (instead of zero), enablingthe servo field detector 430 to detect the next SAM at time t4.

Deficiencies of Free-wheeling

Free-wheeling provides a way for the servo field detector 430 to detecta next SAM, if a SAM is missed, as explained above. However,free-wheeling does not provide a solution for the situation whereanother portion of a servo wedge, which is identical to the SAM (or dueto noise, or media or signal corruption, appears identical to the SAM),is detected instead of an actual SAM. The detection of another portionof the servo wedge that is identical to the SAM pattern or appears to bethe SAM pattern, but is not intended to be the SAM, is referred toherein as a “bad SAM detection.” In contrast, the detection of a SAMpattern that is intended to act as a SAM (i.e., written on the disk tofunction as a SAM), shall be referred to herein as a “good SAMdetection.” A bad SAM detection may also occur because an error tolerantSAM detection circuit made an incorrect decision.

In a conventional servo demodulator, when a bad SAM detection occurs,the sector timer to is reset to zero. Because the sector timer is resetto zero at the wrong time, the servo field detector will start to searchfor the next SAM at the wrong time (and thus, at the wrong location onthe disk). There is still a chance that the servo field detector willdetect a good SAM in the next servo wedge, even if it begins looking atthe wrong time/location. However, it is possible that once a bad SAMdetection occurs, that the servo demodulator will completely lose lock,requiring the servo demodulator to halt and restart in order to relockthe servo signal. Such relocking of the servo signal is time consuming,reducing the performance of the drive. Further, if a bad SAM detectionrepeatedly occurs at a specific location on a disk, it may make itimpossible to retrieve previously written data.

As just explained, a single bad SAM detection can cause the servodemodulator to completely lose lock. Embodiments of the presentinvention, as described below, reduce the likelyhood, and hopefullyprevent, the servo demodulator from losing lock after a bad SAMdetection.

A bad servo signal can also cause the servo AGC and/or PLL values thatare stored, as explained above, to be corrupted. As explained above,servo AGC and/or PLL values can be stored in registers or memory so thatvalues determined while reading one servo wedge 138 can be used as thestarting values for reading a next servo wedge 138. When a servo wedge138 is corrupted, it is possible that the values determined for servoAGC and servo PLL during that servo wedge 138 are garbage (i.e.,corrupted). For example, if the servo wedge 138 was DC erased, the servoAGC 428 may over amplify a very low amplitude servo signal, and may evensaturate itself and/or the VGA 512. Similarly, if the servo wedge 138has been essentially erased, or is absent due to a media defect on thedisk 110, the servo PLL maybe come erratic while attempting to lock to acorrupt servo signal. Thus, a bad servo wedge can also cause the valuesdetermined for servo AGC and servo PLL, during that servo wedge, to begarbage (i.e., corrupted). If these garbage values are used as startingvalues when the next servo wedge 138 is read, it is likely that it willtake at least the entire next servo wedge 138 for the servo AGC 428 andthe servo PLL 426 to recover (e.g., because the servo AGC 428 issaturated and the servo PLL 426 is erratic), causing the SAM in the nextservo wedge 138 to be missed. This in turn can cause the servodemodulator 404 to completely lose lock. When this occurs, the wholeconcept, of having what is learned from one servo wedge influencing howa next wedge is read, backfires. Embodiments of the present invention,as described below, reduce the likelihood, and hopefully prevent, theservo AGC 428 and the servo PLL 426 from retrieving and using garbagevalues.

Characterizing a SAM Detection as Good or Bad

As explained above, in a conventional servo demodulation circuit, thesector timer 542 is automatically reset to zero after a good SAMdetection or a bad SAM detection. This functionality already exists inmany servo demodulators. Some embodiments of the present invention aredirected to reducing the probability that this type of demodulator willlose lock after a bad SAM detection. More specifically, theseembodiments provide a way to overcome the situation where the sectortimer 542 is wrongly reset to zero because of a bad SAM detection.

As mentioned above, when the SAM is detected (whether a good or baddetection), the master state machine 550 signals the sector timer 542 tocause the present value of the sector timer 542 to be saved as aSAM-to-SAM value, and the sector timer 542 to be reset to zero. Whenthis occurs, the previous SAM-to-SAM value (e.g., in the SAM-to-SAM timeregister or memory) is typically written over and the sector timer valueis reset to zero, affecting when/where to search for the SAM in the nextservo wedge 138.

Conventionally, after the SAM pattern is detected in a servo wedge 138,the servo demodulator 404 determines a wedge number value, a tracknumber value and a burst value. Based on these values, the servodemodulator 404 can determine (e.g., calculate) a position error signal(PES). For example, a PES can be calculated based on a track numbervalue and a burst value (e.g., a burst amplitude value).

In accordance with embodiments of the present invention, future wedgenumber values, track number values, burst values and/or PES values arepredicted. The prediction of a next wedge number value is easilydetermined based on a previous wedge number value. Prediction of theother servo demodulation values can be determined, for example, usingstate space estimation. Such state space estimation can be performed,for example, in software and/or firmware (e.g., using the microprocessor410) that run models to produce predicted values. State space estimationis discussed in various control system books, such as “Digital Controlof Dynamic Systems, Second Edition,” by Franklin, Powell and Workman,Addison-Wesley Publishing Company, Inc. (1980). Factors taken intoaccount in these predictions can include, for example, previouslydetected wedge number values, track number values and/orbits values. Avalue can be predicted for the wedge number, track number, burst valueand/or PES, or a range of values can be predicted. Such a range ofvalues can include either a plurality of different values, or two valuesthat define boundaries.

In accordance with embodiments of the present invention, each detectionof the SAM pattern is characterized as a good SAM detection or a bad SAMdetection. Such characterizations can be based on comparisons betweenthe actual servo demodulation values and the predicted servodemodulation values. These characterizations may not be completelyaccurate (i.e., a detection of a pattern intended to be a SAM may becharacterized as a bad SAM detection, or a detection of a pattern notintended to be a SAM pattern maybe characterized as a good SAMdetection). However, the accuracy of the characterizations can be madevery high using the various embodiments discussed below.

In accordance with embodiments of the present invention, if an actualservo demodulation value (e.g., a wedge number value) is substantiallyequal to (i.e., equal to, or with an allowed tolerance of) a predictedvalue, a detection of the SAM is characterized as a good SAM detection.In embodiments where a range of servo demodulation values are predicted(e.g., a range of PES values), a detection of the SAM pattern can becharacterized as a good SAM detection if an actual servo demodulationvalue (e.g., an actual PES value) is within the range of predictedvalues. A plurality of predicted and actual servo demodulation valuescan be determined for a servo wedge. The plurality of predicted values(or ranges of values) can then be compared to the actual servodemodulation values in order to characterize the SAM detection as a goodor a bad SAM detection. Where multiple types of servo demodulationvalues are being predicted and actually determined, the results of themultiple comparisons performed can be weighted equally, or weighteddifferently, during characterization. In accordance with embodiments ofthe present invention, multiple comparisons can be used to produce aconfidence value, which can be compared to a confidence threshold, inorder to characterize a SAM detection as a good or bad SAM detection.

Alternatively, or additionally, the confidence of one or more specificvalues (e.g., a track number value or a wedge number value) and/or theconfidence for a SAM detection can be determined, and these confidencedetermination(s) can be included in the good/bad SAM detectioncharacterizations. Such confidence determinations can be based, forexample, on the number of matched (or mismatched) bits in a pattern justread.

Confidence determinations can alternatively, or additionally, be basedon amplitudes of servo signal samples that make up a detected SAMpattern. For example, demodulated bits can be characterized as lowconfidence or high confidence bits, and the occurrence of low confidencebits (and/or high confidence bits) can be factored into the good/bad SAMdetection characterization. U.S. Pat. No. 5,862,005 to Leis et al.,entitled “Synchronous detection of wide bi-phase coded servo informationfor disk drive,” and U.S. Pat. No. 5,384,671 to Fisher, entitled, “PRMLsampled data channel synchronous servo detector,” which are incorporatedherein by reference, discuss exemplary schemes that can be used forspecifying the confidence of bits.

As explained above, in the discussion of FIG. 6, the servo demodulator404 has access to an EXPECTSAM value, which was represented by dashedline 604. As mentioned above, the EXPECTS AM value can be a nominal orpredetermined value, or it can be dynamic by being based on one or moreprevious SAM-to-SAM values. If dynamic, the dashed line 604 may not beas straight or horizontal as shown in FIG. 6. In accordance with anembodiment of the present invention, the extent that an actualSAM-to-SAM value (associated with a detected SAM pattern) differs fromthe EXPECTSAM value is used as a factor when characterizing a SAMdetection as a good or a bad SAM detection. For example, adetermination, that the difference between the present SAM-to-SAM valueand the EXPECTSAM value is greater than a threshold, can be used whencharacterizing a SAM pattern detection as a bad or a good SAM detection.More specifically, the determination that the difference between theactual SAM-to-SAM value and the EXPECTSAM value is greater than athreshold, can be used together with a comparison(s) between predictedand actual values for the PES, wedge number value, track number value,burst value and/or quality value(s) when characterizing a detection ofthe SAM pattern as a good or a bad SAM detection. These various factorscan be weighted equally, or differently, as desired.

Assuming a SAM detection is characterized as a good SAM detection, theservo demodulator 404 searches for the SAM pattern in the next servowedge 138 as it normally would. However, if a SAM detection ischaracterized as a bad SAM detection, then embodiments of the presentinvention provide a way to overcome the situation where the sector timer542 is wrongly reset to zero (which will cause the servo demodulator 404to search for the next SAM at the wrong time/location). More generally,the present invention can be used to help prevent the servo demodulator404 from losing lock after a bad SAM detection.

Performing Servo Functions Based on Whether a Detection of the SAMPattern is Characterized as a Good or a Bad SAM Detection

The Sector Timer Value vs. Time graph of FIG. 7 will now be used to helpexplain how embodiments of the present invention can prevent the servodemodulator 404 from losing lock after a bad SAM detection. In FIG. 7,as in FIG. 6, dashed line 602 represents the value of the sector timer542 that triggers the SAM detector 532 to begin searching for a SAM(e.g., the STARTSEARCH value), dashed line 604 represents the value ofthe sector time at which the SAM is expected (e.g., the EXPECTSAMvalue), and dashed line 606 represents the ENDSEARCH value (i.e., thevalue of the sector timer 542 that will trigger a timeout condition).

In this example, the SAM pattern is detected at times t1 and t2 (assumethese are good SAM detections). Additionally, the SAM pattern isdetected at time t3-n, which is earlier than the next expected SAM timet3. As explained above and as shown in FIG. 7, conventionally the sectortimer 542 is automatically reset to zero at time t3-n, whether a goodSAM detection or a bad SAM detection occurred at time t3-n.Conventionally, this will cause the servo demodulator 404 to startsearching for the next SAM at an earlier than appropriate time/location(because the sector timer 542 was reset to zero earlier thanappropriate). Additionally, the time/location of the next EXPECTSAM andENDSEARCH will be adversely effected. This may result in another bad SAMdetection, or missing the next SAM, in turn resulting in the servodemodulator 404 losing lock.

Now, assume that an embodiment of the present invention, as describedabove, is used to characterize the detection of the SAM pattern at timet3-n as a bad SAM detection. In accordance with an embodiment of thepresent invention, the SAM pattern in the next servo wedge 138 will besearched for based on when/where the previous SAM pattern, that wascharacterized as a good SAM detection, was detected. In this example thesector timer 542 was already reset to zero, and has begun counting. Thesearching for the next SAM based on a time/location of a detected SAMpattern, characterized as a good SAM detection, is accomplished bybeginning to search for the next SAM pattern at a later time/location.For example, assume that the stored STARTSEARCH value equals 990, thestored EXPECTSAM value equals 1000, and the stored ENDSEARCH valueequals 1010. Also assume the SAM pattern characterized as a bad SAMdetection was detected when the sector timer value was 992, and that theprevious SAM pattern, characterized as a good SAM detection, wasdetected when the sector timer value was 1000. Thus, the bad SAMdetection in this example occurred 8 sector timer counts earlier thanthe EXPECTSAM value. As just mentioned, one of the embodiments of thepresent invention, described above, is used to characterize the currentSAM detection as a bad SAM. In accordance with an embodiment of thepresent invention, to correct for the bad SAM detection, the value inthe STARTSEARCH register is temporarily set to equal 998 (i.e.,990+8=998), the value in the EXPECTSAM register is temporarily set to1008 (i.e., 1000+8=1008), and the value in the TIMESEUP timeout registeris temporarily set to 1018 (i.e., 1010+8=1008). If some of these valueswere stored in memory locations, they can be temporarily changed inmemory. More generally, where/when to search for the next SAM isadjusted so that the search for the next SAM is based on the mostrecently detected good SAM(s), rather than being based on the detectioncharacterized as a bad SAM. In this example, this enables the servodemodulator 404 to perform a good SAM detection at time t4, at whichpoint the STARTSEARCH, EXPECTSAM and ENDSEARCH values are reset orreturned to what they were at time t2, and the servo demodulator 404maintains servo lock. More specifically, when the SAM pattern isdetected (e.g., at time t4), and characterized as a good SAM detection,as a result of temporarily adjusting values (e.g., the values in theSTARTSEARCH register, the EXPECTSAM register and the ENDSEARCH register,as explained above) these values are returned to their previous values(e.g., by subtracting 8 counts from each value or replacing the valueswith stored values).

In a similar manner, the present invention can be used to begin tosearch for the SAM pattern in the next servo wedge 138 at an earliertime/location, if a bad SAM detection occurs when the sector timer valueis between the EXPECTSAM value and the ENDSEARCH value (but did notreach the ENDSEARCH value, which would cause free-wheeling).

In accordance with other embodiments of the present invention, ratherthan adjusting values such as the STARTSEARCH, EXPECTSAM and ENDSEARCHvalues, a timer (e.g., sector timer or delay timer) is appropriatelyadjusted so that the search window for the next SAM pattern iseffectively adjusted. This will now be described with reference to theSector Timer Value vs. Time graph of FIG. 8. As in FIGS. 6 and 7, dashedline 602 represents the value of the sector timer 542 that triggers theSAM detector 532 to begin searching for a SAM (e.g., the STARTSEARCHvalue), dashed line 604 represents the value of the sector time at whichthe SAM is expected (e.g., the EXPECTSAM value), and dashed line 606represents the ENDSEARCH value (i.e., the value of the sector timer 542that will trigger a timeout condition).

In this example, the SAM pattern is detected at times t1 and t2 (assumethese are good SAM detections). Additionally, the SAM pattern isdetected at time t3-n, which is earlier than the next expected SAM timet3. As explained above and as shown in FIG. 8, conventionally the sectortimer 542 is automatically reset to zero at time t3-n, whether a goodSAM detection or a bad SAM detection occurred at time t3-n.Conventionally, this will cause the servo demodulator 404 to startsearching for the next SAM at an earlier than appropriate time/location(because the sector timer 542 was reset to zero earlier thanappropriate), which may result in another bad SAM detection, or missingthe next SAM, in turn resulting in the servo demodulator 404 losinglock.

Now, assume that an embodiment of the present invention, as describedabove, is used to characterize the detection of the SAM pattern at timet3-n as a bad SAM detection. In accordance with an embodiment of thepresent invention, the SAM pattern in the next servo wedge 138 will besearched for based on when/where the previous SAM pattern was detected,which was characterized as a good SAM detection. Since in this examplethe sector timer 542 was already reset to zero, and has began counting,the searching for the next SAM based on a previous SAM detection(characterized as a good SAM detection) is accomplished by adjusting atimer (e.g., sector timer or delay timer). For example, assume that thestored STARTSEARCH value equals 990, the stored EXPECTSAM value equals1000, and the stored ENDSEARCH value equals 1010. Also assume the SAMpattern, characterized as a bad SAM detection was detected when thesector timer value was 992, and that the previous SAM detection(characterized as a good SAM detection) occurred when the sector timervalue was 1000. Thus, the bad SAM detection in this example occurred 8sector timer counts earlier than the EXPECTSAM value (and thus thesector timer was reset 8 counts too early, and is therefore 8 countsgreater than it should be). As just mentioned, one of the embodiments ofthe present invention, described above, is used to characterize the SAMdetection at time t3-n as a bad SAM detection. In accordance with anembodiment of the present invention, to correct for the bad SAMdetection, the value of the sector timer is adjusted (in this example,reduced by 8 counts) so that the bad SAM detection does not adverselyaffect the SAM search window. More generally, where/when to search forthe next SAM is adjusted, by adjusting the timer, so that the search forthe next SAM is based on the most recently detected SAM(s) that wascharacterized as a good SAM detection, rather than being based on thebad SAM. In this example, this enables the servo demodulator 404 toperform a good SAM detection at time t4, and the servo demodulator 404maintains servo lock. In other words, in this example the timer isadjusted so that it is equal to what it would have been had the SAMpattern been detected at time t3 (in which case the timer would havebeen following dashed line 802).

In a similar manner, the present invention can be used to upwardlyadjust the timer (i.e., to add counts to the timer), if a bad SAMdetection occurs when the sector timer value is between the EXPECTSAMvalue and the ENDSEARCH value (but did not reach the ENDSEARCH value,which would cause free-wheeling).

Features of the embodiments of the present invention can be implementedprimarily in software and/or in firmware (e.g., RAM, ROM, PROM and/orEPROM), or in combinations thereof For example, where embodiments of theinvention are to be used with an existing servo demodulator 404,firmware can be programmed to characterize a detected SAM pattern aseither a good or a bad SAM detection, to adjust values used to searchfor the SAM pattern (e.g., the values in the STARTSEARCH register, theEXPECTSAM register and the ENDSEARCH register, or in memory as explainedabove), and/or to only update other control values (e.g., servo AGCand/or PLL values) following a good SAM detection. Firmware can also beprogrammed to overwrite erroneously updated servo AGC and/or PLL valueswith more appropriate previously determined values, in accordance withembodiment of the present invention.

Embodiment of the present invention can also be implemented primarily inhardware. As mentioned above, STARTSEARCH, EXPECTSAM, ENDSEARCH andTIMESUP load time values can be stored in registers. When a SAMdetection is characterized as a bad SAM detection, the master statemachine 532 or microprocessor 410 can write a specified bit (e.g., azero) to a predetermined register. In accordance with an embodiment ofthe present invention, writing the specified bit to the predeterminedregister will cause the values in the STARTSEARCH and ENDSEARCHregisters to be adjusted by an ADJUST value. According to an embodimentof the preset invention, the ADJUST value is equal to the actualSAM-to-SAM value (i.e., the value of the sector timer 542 when the SAMcharacterized as being bad was detected) minus the stored EXPECTSAMvalue. Prior to the bad SAM detection, assume the STARTSEARCH value(i.e., the value the in the STARTSEARCH register) is 990, the EXPECTSAMvalue is 1000, and the ENDSEARCH value is 1010. Also assume, for thisexample, that the SAM-to-SAM value is 993 when the SAM characterized asbeing bad is detected (i.e., the value of the sector timer 542 is 993when the SAM characterized as being bad was detected), thereby causingthe ADJUST value to equal −7 (i.e., 993−1000=−7). After the values inthe STARTSEARCH and ENDSEARCH registers are adjusted by −7, theSTARTSEARCH value becomes 997 (i.e., 990−−7=997) and the ENDSEARCH valuebecomes 1017 (i.e., 1010−−7=1017). In another example, assume that theSAM-to-SAM value is 1005 when the SAM characterized as being bad isdetected. This will cause the ADJUST value to equal 5 (i.e.,1005−1000=5). After the values in the STARTSEARCH and ENDSEARCHregisters are adjusted by 5, the STARTSEARCH value becomes 985 (i.e.,990−5=985) and the ENDSEARCH value becomes 1005 (i.e., 1010−5=1005).Such adjustments to the STARTSEARCH and ENDSEARCH registers will assistthe servo demodulator 404 with performing a good SAM detection in thenext servo wedge 138, even though a bad SAM detection occurred in thecurrent servo wedge 138.

In accordance with another embodiment of the present invention,STARTSEARCH, EXPECTSAM, ENDSEARCH and TIMESUP load time values can bestored in memory. Then, writing a specified bit to the predeterminedlocation in memory will cause the values in the STARTSEARCH andENDSEARCH registers to be adjusted by an ADJUST value, in a mannersimilar to that just explained above.

Many embodiments of the present invention, discussed above, can besummarized in the flow chart of FIG. 9. Referring to FIG. 9, at a step902, one or more predicted servo demodulation values are determined fora next servo wedge. For example, the one or more predicted servodemodulation values can include one, a plurality, or a range of wedgenumber, track number, burst amplitude, and/or PES value(s).

At a step 904, the SAM pattern is searched for in the next servo wedge.If the SAM pattern is not detected in the servo wedge (i.e., if theanswer to the decision 906 is no), then further servo functions areperformed taking into account no SAM detection, as specified at a step916. This can include, for example, free-wheeling to attempt to detectthe SAM pattern in the following servo wedge. This can also includehalting reading data from and writing data to data fields that followthe servo wedge. This can further include, using the one or morepredicted servo demodulation values for servo control.

If the SAM pattern is detected in the servo wedge (i.e., if the answerto decision 906 is yes), then one or more actual servo demodulationvalues are determined for the servo wedge, at a step 908. Then, at astep 910, the detection of the SAM pattern is characterized as a goodSAM detection or a bad SAM detection. As explained above, this can beaccomplished by comparing the actual servo demodulation value(s) to thepredicted servo demodulation value(s). Alternatively, or additionally,other factors, such as the extent that an actual SAM-to-SAM value(associated with a detected SAM pattern) differs from an EXPECTSAMvalue, and/or confidence determinations, can be used to characterize adetection of the SAM pattern as a good or a bad SAM detection.

If the detection of the SAM pattern is characterized as a bad SAMdetection (i.e., if the answer to decision 912 is no), then furtherservo functions are performed, taking into account the bad SAM detectioncharacterization, as specified at a step 918. For example, this caninclude halting reading data from and writing data to data fields thatfollow the servo wedge. This can also include, using the one or morepredicted servo demodulation values for servo control, since the actualservo demodulation values are likely garbage. Additionally, where orwhen to search for the SAM pattern in the following servo wedge can beappropriately adjusted, as explained in detail above.

If the detection of the SAM pattern is characterized as a good SAMdetection (i.e., if the answer to decision 912 is yes), then furtherservo functions are performed, taking into account the good SAMdetection characterization, as specified at a step 914. For example,this can include reading data from and writing data to data fields thatfollow the servo wedge. This can also include, using the one or moreactual servo demodulation values for servo control, since the actualservo demodulation values are likely good. Additionally, where or whento search for the SAM pattern in the following servo wedge can be basedon where or when the SAM pattern was just detected (e.g., the center ofthe next SAM search window can be based on the just determinedSAM-to-SAM time).

Searching for More Than One Occurrence of the SAM Pattern in a SingleServo Wedge

Conventionally, if a bad SAM detection occurs within a servo wedge 138,a servo demodulator will not perform a good SAM detection within thatsame servo wedge, even if a good SAM pattern exists later within thatsame servo wedge. For example, if a servo demodulator performs a bad SAMdetection near the beginning of a search window, a conventional servodemodulator will not detect a good SAM pattern that is also present inthe servo wedge. This is because conventional servo demodulators do notsearch for more than one SAM pattern within a single servo wedge.Embodiments of the present invention, as described below, search formore than one SAM pattern within a single servo wedge, and select whichSAM detection (if any) is a good SAM detection. In this manner, furtherservo functions (e.g., servo control) can be performed using servodemodulation values associated with a good SAM detection (or a best goodSAM detection, if there is more than one good SAM detection).

In accordance with embodiments of the present invention, portions of theservo demodulator 404 (or the entire servo demodulator 404, or portionsof or the entire servo demodulator 404 and portions of the read/writepath 412) are duplicated so that more than one SAM pattern can besearched for within a single servo wedge. For example, two servo fielddetectors 430 (each including a SAM detector 532) can each search forthe SAM pattern within a single servo wedge. When the first servo fielddetector 430 detects the SAM pattern, the second servo field detector430 will suppress or ignore that the SAM pattern was detected and willcontinue to search for the SAM pattern in the remaining portion of theservo wedge (as defined by the remaining portion of the search window).If the second servo field detector 430 also detects the SAM pattern, adetermination is made as to which SAM detection (if any) is a good SAMdetection. If both SAM detections are characterized as a good SAMdetection, then a best good SAM detection can be selected, as describedbelow.

If no SAM detection is characterized as a good SAM detection, then theSAM pattern in the next servo wedge 138 can be searched for based on theone or more previous characterized good SAM detections. Additionally, ifno SAM detection is characterized as a good SAM detection (or if thereis no SAM detection at all within a servo wedge 138), then themicroprocessor 410 can use predicted servo demodulation values for servocontrol (e.g., for control of the VCM 418).

Embodiments of the present invention are not meant to be limited tosearching for only two of the SAM patterns within a single servo wedge.For example, further servo field detectors 430 can be provided to searchfor additional occurrences of the SAM pattern within a single servowedge.

Servo demodulation values (e.g., a track number value, a wedge numbervalue, a burst value and/or a PES value) can be determined for each SAMpattern detected within a servo wedge 138. Then, each SAM patterndetection can be characterized as a good SAM detection or a bad SAMdetection. If only one good SAM detection occurs in the servo wedge 138,the servo demodulation values associated with the good SAM detection areused for servo control (e.g., used in servo control algorithms).Additionally, where or when to search for the SAM pattern in the nextservo wedge 138 is based on when/where the one good SAM detectionoccurred.

If more than one good SAM detection occurs in the servo wedge 138, thena “best” good SAM detection can be selected. Selection of the best goodSAM detection can be based on which SAM detection corresponds to one ormore actual servo demodulation values that are closest to one or morepredicted servo demodulation values. The servo demodulation valuesassociated with the best good SAM detection can be used for servocontrol (e.g., used in servo control algorithms). In summary, the one ormore actual servo demodulation values associated with the best good SAMdetection (or the only good SAM detection) are used for servo control(e.g., for control of the VCM 418). If there is no good SAM detection(or no SAM detection at all), the one or more predicted servodemodulation values can be for servo control.

In accordance with other embodiments of the present invention, the servodemodulator 404 searches for more than one SAM pattern in a single servowedge 138 without duplicated portions of the servo demodulator 404 (orminimizing the portions that are duplicated). For example, a singleservo field detector 430 (including a single SAM detector 532) cansearch for multiple occurrences of the SAM pattern within a single servowedge 138. Each time the SAM detector 532 detects the SAM pattern in aservo wedge 138, it informs the microprocessor 410 and/or master statemachine 532 of the detection, and continues to search for additionaloccurrences of the SAM pattern. Each time the SAM detector 532 detectsthe SAM pattern, the track number detector 534 and burst demodulator 536generate servo demodulation values that correspond to the detected SAMpattern. The microprocessor 410 can keep track of the multiple SAMpattern detections and corresponding servo demodulation values (whichmay be stored in registers or memory), and then select which SAMdetection (if any) is a good (or best good) SAM detection. Themicroprocessor 410 can then use the appropriate servo demodulationvalues (whether actual or predicted) for servo control. Further, themicroprocessor 410 can appropriately adjust the SAM search window forthe next servo wedge 138 (e.g., by adjusting STARTSEARCH and ENDSEARCHvalues) based on a good (or a best good) SAM detection, or based on aprevious good SAM detection if there is no SAM detection or no good SAMdetection for the current servo wedge.

In accordance with embodiments of the present invention, the servosubpart field following a detected SAM pattern (e.g., the wedge numberfield) is immediately demodulated and compared to one or more predictedvalues to characterize the SAM detection as a good or a bad SAMdetection. As soon as the detection is determined to be a bad SAMdetection, no additional demodulation associated with that SAM detectionoccurs. This increases the efficiency of demodulator and microprocessorresources.

In accordance with embodiment of the present invention, servodemodulation values are only stored in registers if they correspond to aSAM pattern detection that is characterized as a good SAM detection.This enables more efficient use of register space. However, inalternative embodiments servo demodulation values are stored prior toSAM detections being characterized as good or bad detections. Then,decisions of whether or not to use the stored servo demodulations valuesare made based on the characterizations of the SAM detections.

Many embodiment of the present invention, discussed above, can besummarized in the flow chart of FIG. 10. Referring to FIG. 10, at a step1002, multiple occurrences of the SAM pattern are searched for in aservo wedge. As explained above, the servo demodulator 404 can includeduplicated portions (e.g., two servo field detectors 430) to performthis step. Alternatively, the servo demodulator 404 can search formultiple occurrences of the SAM pattern, without needing duplicatedportions.

If the SAM pattern is not detected in the servo wedge (i.e., if theanswer to decision 1004 is no), the further servo functions areperformed, taking into account no detection of the SAM pattern. This caninclude, for example, free-wheeling to attempt to detect the SAM patternin the following servo wedge. This can also include halting reading datafrom and writing data to data fields that follow the servo wedge. Thiscan further include, using the one or more predicted servo demodulationvalues for servo control.

Each detection of the SAM pattern is characterized as a good SAMdetection or a bad SAM detection, at a step 1006. Various embodiments ofthe present invention, described above, can be used to perform thesecharacterizations. For example, this can be accomplished by comparingone or more actual servo demodulation value(s) to one or more predictedservo demodulation value(s). Alternatively, or additionally, otherfactors, such as the extent that an actual SAM-to-SAM value (associatedwith a detected SAM pattern) differs from an EXPECTSAM value, and/orconfidence determinations, can be used to characterize each detection ofthe SAM pattern as a good or a bad SAM detection.

If no detection of the SAM pattern is characterized as a good SAMdetection (i.e., if the answer to decision 1008 is no), then furtherservo functions are performed, taking into account a bad SAMdetection(s) characterization(s), as specified at a step 1016 Forexample, this can include halting reading data from and writing data todata fields that follow the servo wedge. This can also include, usingone or more predicted servo demodulation values for servo control, sincethe actual servo demodulation values are likely garbage. Additionally,where or when to search for the SAM pattern in the following servo wedgecan be appropriately adjusted, as explained in detail above.

If only one detection of the SAM pattern is characterized as a good SAMdetection (i.e., if the answer to decision 1010 is no), then furtherservo function are performed, taking into account the one good SAMdetection characterization, as specified at a step 1018. For example,this can include reading data from and writing data to data fields thatfollow the servo wedge. This can also include, using the one or moreactual servo demodulation values for servo control, since the actualservo demodulation values are likely good. Additionally, where or whento search for the SAM pattern in the following servo wedge can be basedon where or when the SAM pattern was just detected (e.g., the center ofthe next SAM search window can be based on the just determinedSAM-to-SAM time).

If multiple detections of the SAM pattern are characterized as good SAMdetections (i.e., if the answer to decision 1010 is yes), then one ofthe detections is selected as a best good SAM detection, at a step 1012.As explained above, selection of the best good SAM detection can bebased on which SAM detection corresponds to one or more actual servodemodulation values that are closest to one or more predicted servodemodulation values.

After one of the SAM detections is selected as a best good SAMdetection, further servo functions are performed, taking into accountthe best good SAM detection characterization, as specified at a step1020. For example, the servo demodulation values associated with thebest good SAM detection can be used for servo control (e.g., used inservo control algorithms). Additionally, where or when to search for theSAM pattern in the following servo wedge can be based on where or whenthe SAM pattern (characterized as the best good SAM pattern) was justdetected. In accordance with an embodiment, data can be written toand/or read from data fields that follow the servo wedge. In analternative embodiment, the fact the two occurrences of the SAM patternwere characterized as good SAM detections can indicate that there is notenough confidence to write to and/or read from data fields that followthe servo wedge. In still another embodiment, if the two good SAMdetections are too closely matched (i.e., one is not much better thanthe other), then there is not enough confidence to write to and/or readfrom data fields that follow the servo wedge. However, if one of thegood SAM detection is much better (e.g., the SAM detection is associatedwith actual demodulation values much closer to the predicted values),then data can be written to and/or read from data fields that follow theservo wedge.

Correcting PLL and/AGC Values After a Bad or Missed SAM Detection

As discussed above, a bad servo signal (e.g., caused by a single badservo wedge 138) can cause the servo AGC and/or PLL values that arestored in registers or memory, to be corrupted. As also explained above,servo AGC and/or PLL values are stored so that values determined whilereading one servo wedge 138 can be used as the starting values forreading a next servo wedge 138. Alternatively, servo AGC and/or PLLvalues that are determined and stored from one servo wedge 138 can beused to predict starting values for reading a next servo wedge 138. Ifcorrupted values are used as starting values (or to predict startingvalues) when the next servo wedge 138 is read, it is possible that itwill take at least the entire next servo wedge 138 for the servo AGC 428and/or the servo PLL 426 to recover, causing the SAM in the next servowedge 138 to be missed. This in turn can cause the servo demodulator 404to completely lose lock. When this occurs, the whole concept, of havingwhat is learned from one servo wedge 138 influencing how a next wedge138 is read, backfires. Embodiments of the present invention, which arenow described, reduce the likelihood, and hopefully prevent, the servoAGC 428 and the servo PLL 426 from retrieving and using garbage valuesafter a bad SAM detection or missed SAM detection (i.e., no SAMdetection) occurs. These embodiments use the knowledge that a bad SAMdetection characterization or missed SAM detection occurred in a servowedge 138, to indicate that it is likely that the servo AGC and servoPLL values during that servo wedge 138 are garbage (i.e., corrupted).

In accordance with embodiments of the present invention, discussed withreference to FIG. 11A, stored servo AGC and/or PLL values are onlyupdated following a good SAM detection. Thus, if a SAM detection ischaracterized as a bad SAM detection, the AGC and/or servo PLL valuesstored in registers or memory are not updated with the values justdetermined by the servo AGC 428 and servo PLL 426. In other embodiments,discussed with reference to FIG. 11B, servo AGC and/or PLL values arestored for each servo wedge, but the just stored values are only used asstarting values (or to predict starting values) for the next servo wedgefollowing a good SAM detection (otherwise, previously stored servo AGCand/or PLL values are used as starting values, or used to predict thestarting values). For example, before new servo AGC and/or PLL valuesare stored for a present servo wedge 138, the values being overwrittenare stored in another location (e.g., in other registers or memorylocations). Then, if the SAM detection for that servo wedge 138 is latercharacterized as a bad SAM detection, the previous servo AGC and/or PLLvalues can be restored. In each embodiment, when a next servo wedge 138is read (following a servo wedge 138 where a bad SAM detectioncharacterization occurred), the starting values for servo AGC 428 and/orPLL 426 will most likely not be garbage, thereby reducing the likelihoodthat the servo demodulator 404 will lose lock.

A particularly useful application of retaining AGC and/or PLL valuesfrom one wedge to the next is with media-written disks, wheremis-centering of disks that are written outside of a disk drive maycause approximately ±1% (max) frequency variation. Embodiments of thepresent invention can be used to improve the performance of disk drivesusing media-written disks. In such a case, a prediction of theappropriate PLL value for a next servo wedge can be determined as afunction of the values saved from a previous wedge (one for which a goodSAM detection occurred), the known eccentricity of the disk, and thenumber of wedges since that good SAM detection occurred.

Many embodiment of the present invention, discussed above, can besummarized in the flow chart of FIG. 11A. Referring to FIG. 11A, at astep 1102, the SAM pattern is searched for in a servo wedge. If the SAMpattern is not detected in the servo wedge (i.e., if the answer todecision 1104 is no), then one or more previously stored (or predictedbased on previously stored) channel control values are used as startingvalues when reading a next servo wedge, as specified at a step 1112. Thechannel control values can be servo AGC and/or PLL values, as explainedabove. By using previously stored (or predicted based on previouslystored) channel control values following a missed SAM detection (i.e.,no SAM detection), garbage values will not be used for servo AGC, PLL,and the like, reducing the likelihood the servo demodulator 404 willlose lock, as explained above. Channel control values can be predicted,for example, based on a plurality of previously determined values.Simple averaging algorithms can be used, or more complex state spaceestimations can be used. For example, a starting PLL value can bepredicted based on the PLL value stored for the most recent wedgewherein a good SAM detection occurred, the known eccentricity of thedisk, and the number of wedges since that good SAM detection occurred.

If the SAM pattern is detected in the servo wedge (i.e., if the answerto decision 1104 is yes), then the detection is characterized as a goodor a bad SAM detection, at a step 1106. Various embodiments forcharacterizing the detection of the SAM pattern are explained in detailabove. For example, this can be accomplished by comparing the actualservo demodulation value(s) to the predicted servo demodulationvalue(s). Alternatively, or additionally, other factors, such as theextent that an actual SAM-to-SAM value (associated with a detected SAMpattern) differs from an EXPECTSAM value, and/or confidencedeterminations, can be used to characterize a detection of the SAMpattern as a good or a bad SAM detection.

If the detection of the SAM pattern is characterized as a bad SAMdetection (i.e., if the answer to decision 1108 is no), then one or morepreviously stored (or predicted based on previously stored) channelcontrol values are used as starting values when reading a next servowedge, as specified at step 1112. By using previously stored (orpredicted based on previous stored) channel control values following aSAM detection characterized as a bad SAM detection, garbage values willnot be used for servo AGC, PLL, and the like, reducing the likelihoodthe servo demodulator 404 will lose lock, as explained above.

If the detection of the SAM pattern is characterized as a good SAMdetection (i.e., if the answer to decision 1108 is yes), then thechannel control values determined for a servo wedge are stored, asspecified at a step 1110. The just stored one or more channel controlvalues are then used as starting values (or to predict starting values)when reading the next servo wedge, as specified at a step 1114.

Other embodiments of the present invention, discussed above, can besummarized in the flow chart of FIG. 11B. Referring to FIG. 11B, at astep 1122, the SAM pattern is searched for in a servo wedge. At a step1124, one or more channel control values are stored for the wedge justsearched, regardless of whether a SAM pattern was detected. (Steps 1122and 1124 can be reversed, so that channel control values are only storedif a SAM pattern was detected, regardless whether the SAM detection wascharacterized as good or bad.) If the SAM pattern is not detected in theservo wedge (i.e., if the answer to decision 1126 is no), then one ormore previously stored (or predicted based on previously stored) channelcontrol values are used as starting values when reading a next servowedge.

If the SAM pattern is detected in the servo wedge (i.e., if the answerto decision 1126 is yes), then the detection is characterized as a goodor a bad SAM detection at a step 1128. If the detection of the SAMpattern is characterized as a bad SAM detection (i.e., if the answer todecision 1130 is no), then one or more previously stored (or predictedbased on previously stored) channel control values are used as startingvalues when reading a next servo wedge, as specified at a step 1132. Ifthe detection of the SAM pattern is characterized as a good SAMdetection (i.e., if the answer to decision 1130 is yes), then the juststored one or more channel control values are used as starting values(or to predict starting values) when reading a next servo wedge, asspecified at a step 1134.

While various embodiments of the present invention have been describedabove, it should be understood that they have been presented byway ofexample, and not limitation. It will be apparent to persons skilled inthe relevant art that various changes in form and detail can be madetherein without departing from the spirit and scope of the invention.

The present invention has been described above with the aid offunctional building blocks illustrating the performance of specifiedfunctions and relationships thereof. The boundaries of these functionalbuilding blocks have often been arbitrarily defined herein for theconvenience of the description. Alternate boundaries can be defined solong as the specified functions and relationships thereof areappropriately performed. Any such alternate boundaries are thus withinthe scope and spirit of the claimed invention.

The breadth and scope of the present invention should not be limited byany of the above-described exemplary embodiments, but should be definedonly in accordance with the following claims and their equivalents.

1. A servo demodulation system, comprising: a microprocessor adapted topredict at least one servo demodulation value for a servo wedge; and aservo field detector adapted to search for a SAM pattern within a servowedge and to determine at least one actual servo demodulation valuecorresponding to a detection of the SAM pattern; wherein themicroprocessor is further adapted to characterize a detection of the SAMpattern as either a good SAM detection or a bad SAM detections based ona comparison of the at least one predicted value to the at least oneactual value.
 2. The system of claim 1, wherein when or where the servofield detector searches for the SAM pattern in a next servo wedge isaffected by whether the microprocessor characterizes a SAM detection asa good SAM detection or as a bad SAM detection.
 3. The system of claim2, wherein if a SAM detection is characterized as a bad SAM detection,the servo field detector is adapted to search for the SAM pattern in anext servo wedge based on when or where the SAM pattern was detected ina servo wedge prior to where the bad SAM detection characterizationoccurred.
 4. The system of claim 3, wherein if a SAM detection isdetermined to be a good SAM detection, the servo field detector isadapted to search for the SAM pattern in a next servo wedge based onwhen or where the SAM pattern was detected in the servo wedge where thegood SAM detection characterization occurred.
 5. The system of claim 4,wherein the servo field detector includes a SAM detector and at leastone of the following: a track number detector; a wedge number detector;and a burst demodulator.
 6. The system of claim 5, wherein: the at leastone servo demodulation value comprises a tack number value and a burstvalue; and the microprocessor is adapted to: determine at least onepredicted position error signal (PES) value; determine an actual PBSvalue based at least in pan on the track number value and the burstvalue; and characterize a detection of the SAM pattern by the SAMdetector as either a good SAM detection or a bad SAM detection, based atleast in part on a comparison between the at least one predicted PESvalue and the actual PES value.
 7. The system of claim 1, wherein themicroprocessor is adapted to determine a difference between a predictedSAM-to-SAM value and an actual SAM-to-SAM value, and to characterize adetection of the SAM pattern by the SAM detector as either a good SAMdetection or a bad SAM detection, based at least in part on thedifference.
 8. A disk drive system, comprising: a STARTSEARCH registerto store a STARTSEARCH value; an ENDSEARCH register to store anENDSEARCH value; a servo demodulator to search for a SAM pattern in aservo wedge, wherein a search window is defined by the STARTSEARCH andENDSEARCH values; and a microprocessor to characterize a detection ofthe SAM pattern as either a good SAM detection or a bad SAM detectionwhen the servo demodulator detects the SAM pattern; wherein themicroprocessor adjusts the values in the STARTSEARCH and ENDSEARCHregisters when the SAM pattern detected by the servo demodulator ischaracterized as a bad SAM detection.
 9. The system of claim 8, furthercomprising: a means for storing an expected SAM-to-SAM value; whereinthe microprocessor adjusts the STARTSEARCH and ENDSEARCH values by anADJUST value, if a detection of the SAM pattern is characterized as abad SAM detection, the ADJUST valve being a difference between theexpected SAM-to-SAM value and an actual SAM-to-SAM value.
 10. The systemof claim 9, further comprising: a timer to count time intervals; whereinthe actual SAM-to-SAM value is based on the value of the timer when theSAM pattern was detected.
 11. The system of claim 8, wherein: the servodemodulator determines at least one actual servo demodulation value whenthe SAM pattern is detected in a servo wedge; wherein the microprocessorpredicts at least one servo demodulation value for the servo wedge, andcharacterizes a detection of the SAM pattern as either a good SAMdetection or a bad SAM detection, based on a comparison between the atleast one predicted value and the at least one actual value.
 12. Thesystem of claim 11, wherein the microprocessor uses the at least onepredicted servo demodulation value for servo control if detection of theSAM pattern is characterized as a bad SAM detection, and uses the atleast one actual servo demodulation value for servo control if detectionof the SAM pattern is characterized as a good SAM detection.
 13. A diskdrive system, comprising: a head disk assembly including: at least onedisk having servo wedges and data fields; a least one head to produce asignal representative of information stored in the servo wedges and datafields; and a voice coil motor to position the at least one head overthe at least one disk; a path to condition the signal produced by thehead and to produce a conditioned signal therefrom; a servo demodulatorto detect a servo address mark (SAM) pattern in the conditioned signaland to produce actual servo demodulation values; and a microprocessor topredict servo demodulation values and to compare the predicted servodemodulation values to the actual servo demodulation values to therebycharacterize a detection of the SAM pattern by the servo demodulator asa good SAM detection or a bad SAM detection.
 14. The system of claim 13,wherein the microprocessor uses at least one actual servo demodulationvalue to control the voice coil motor when a detection of the SAMpattern is characterized as a good SAM detection, and use at least onepredicted servo demodulation value to control the voice coil motor whena detection of the SAM pattern is characterized as a bad SAM detection.15. The system of claim 14, wherein the predicted servo demodulationvalues includes at least one of the following: a track number value; awedge number value; a burst value; and a position error signal value.16. The system of claim 13, wherein the servo demodulator adjusts whereor when to look the SAM pattern in a next servo wedge if a detection ofthe SAM pattern in a most recent servo wedge is characterized as a badSAM detection.
 17. A system, comprising: a servo demodulator to detect aservo address mark (SAM) pattern in a signal and to produce at least oneactual servo demodulation value for a detection of the SAM pattern; anda microprocessor to predict servo demodulation values and to compare atleast one predicted servo demodulation value to at least one actualservo demodulation value to thereby characterize a detection of the SAMpattern by the servo demodulator as a good SAM detection or a bad SAMdetection.
 18. The system of claim 17, wherein the microprocessor usesat least one actual servo demodulation value to control the voice coilmotor when a detection of the SAM pattern is characterized as a good SAMdetection, and uses at least one predicted servo demodulation value tocontrol the voice coil motor when a detection of the SAM pattern ischaracterized as a bad SAM detection.
 19. The system of claim 18,wherein the at least one predicted servo demodulation value includes atleast one of the following: a track number value; a wedge number value;a burst value; and a position error signal value.
 20. The system ofclaim 17, wherein the servo demodulator adjusts where or when to lookthe SAM pattern in a next servo wedge if a detection of the SAM patternin a most recent servo wedge is characterized as a bad SAM detection.21. A servo demodulation system, comprising: a microprocessor adapted topredict at least one servo demodulation values for a servo wedge; aservo field detector adapted to search for the SAM pattern within aservo wedge and to determine at least one actual servo demodulationvalues corresponding to a detection of the SAM pattern; and a timingcircuit adapted to specify when or where the servo field detector beginsto search for the SAM pattern within a servo wedge; wherein themicroprocessor is further adapted to characterize a detection of the SAMpattern as either a good SAM detection or a bad SAM detection, based ona comparison of at least one predicted value to at least one actualvalue; and wherein the timing circuit is adjusted, if a detection of theSAM pattern is characterized as a bad SAM detection, so that the searchfor the SAM pattern in a next servo wedge is based on a most recentdetection of the SAM pattern that was characterized as a good SAMdetection.
 22. A servo demodulator system, comprising: a servo fielddetector adapted to search for a SAM pattern within a servo wedge and todetermine at least one actual servo demodulation value corresponding toa detection of the SAM pattern; and a microprocessor adapted to compareat least one predicted servo demodulation value to the at least oneactual servo demodulation value, to thereby select either the at leastone actual servo demodulation value, or the at least one predicted servodemodulation value, for servo control.
 23. A disk drive system,comprising: a head disk assembly including: at least one disk havingservo wedges and data fields; a least one head to produce a signalrepresentative of information stored in the servo wedges and datafields; and a voice coil motor to position the at least one head overthe at least one disk; a path to condition the signal produced by thehead and to produce a conditioned signal therefrom; a servo demodulatorto detect a servo address mark (SAM) pattern in the conditioned signaland to produce actual servo demodulation values; and a microprocessor topredict servo demodulation values and to compare the predicted servodemodulation values to the actual servo demodulation values, to therebyselect either the predicted servo demodulation values or the actualservo demodulation values to control the voice coil motor.